package com.gaogzhen.designPattern.twoPhraseTermination;

import lombok.extern.slf4j.Slf4j;

import java.util.concurrent.TimeUnit;

@Slf4j(topic = "c.TwoPhraseTermination")
public class TwoPhraseTermination {
    // 监控线程
    private Thread monitorThread;
    // 结束标记
    private  boolean stop = false;

    // 启动监控线程
    public void start() {
        monitorThread = new Thread(() -> {
            Thread current = Thread.currentThread();
            // 判断是否被打断
            while (true) {
                if (stop) {
                    log.debug("清理工作...");
                    break;
                }

                try {
                    // 工作内容
                    // 模拟花费的时间
                    TimeUnit.SECONDS.sleep(1);
                    log.debug("执行监控记录");
                } catch (InterruptedException e) {
                    // 异常处理
                }
            }
        });

        monitorThread.start();
    }

    // 停止监控线程
    public void stop() {
        stop = true;
        // 如果线程在睡眠，可立即结束线程
        monitorThread.interrupt();
    }
}
